iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 5
0

當有許多條件需要判斷時,若仍然使用 if..else 判斷式,可能會造成程式碼雜亂難懂,會變成這樣。

if (conditionA) {
  //do something
} else if (conditionB) {
  //do something
} else if (conditionC) {
  //do something
} else if (conditionD) {
  //do something
} else if (conditionE) {
  //do something
} else if (conditionF) {
  //do something
} else if (conditionG) {
  //do something
} else {
  //do something
}

為了避免這樣的情形發生, when 誕生了!

when 可以很有條列的列出在哪種條件下,該做什麼對應程式碼,在後續維護上,可以很明確找到想要找的區塊。

我們以剛剛舉的第一個例子來看,如果今天餐廳收費式採取很多段年齡收費的話用 if..else 就會使得程式碼雜亂,來使用 when 看看吧!

fun chargeByAge(age: Int):Int {
  val charge: Int
  when(age) {
    in 0..6 -> {
      charge = 0
    }
    in 6..14 -> {
      charge = 200
    }
    in 14..65 -> {
      charge = 400
    }
    else -> {
      charge = 300
    }
  }
  return charge
}

可以很明確看出有分四個條件, 0~6 6~14 14~65 65以上 而根據年齡不同有不同的收費 0 200 400 300 。
和 if..else 一樣, when 也屬於 expression ,而執行程式碼若只有一行,也可以將 {} 省略,這邊兩個步驟會一起做,若還不熟的同學可以往上在看一次 if..else 的部分,簡化程式碼的部分都是一樣的!

fun chargeByAge(age: Int):Int {
  val charge =
  when(age) {
    in 0..6 -> 0
    in 6..14 -> 200
    in 14..65 -> 400
    else -> 300
  }
  return charge
}

簡化後更明確可以看出哪一條件下,要執行哪一段程式碼,看起來舒服,日後維護會更舒服!!


上一篇
[Day 4] Kotlin 語法 - 條件判斷 (1)
下一篇
[Day 6] Kotlin 語法 - 迴圈 ( For )
系列文
Android心得筆記×Kotlin語法初探 不是新手村 是嬰兒村30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言